package com.rocbrid.order.config;

import feign.Logger;
import feign.Retryer;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class OrderServiceConfig {

    /**
     * Spring Cloud OpenFeign 默认情况下不为 feign 提供以下 bean，但仍从应用程序上下文中查找这些类型的 bean 以创建 Feign 客户端：
     * Logger.Level  记录器.级别
     * Retryer  重试器
     * ErrorDecoder  ErrorDecoder （错误解码器）
     * @return
     */
    //开启了重试机制默认规则为间隔100毫秒,最大间隔1秒,最多尝试5次
    @Bean
    Retryer retryer(){
        return new Retryer.Default(); //this(100L, TimeUnit.SECONDS.toMillis(1L), 5);
    }

    @LoadBalanced //标注后restTemplate自带负载均衡功能
    @Bean
    public RestTemplate restTemplate(){
        return  new RestTemplate();
    }
    /*
    开枪Feign的日志记录
     */
    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }
}
